<?php
App::uses('ExceptionRenderer', 'Error');

class AppExceptionRenderer extends ExceptionRenderer {

	public function error400($error) {
		$message = $error->getMessage();
		if (Configure::read('debug') == 0 && $error instanceof CakeException) {
			$message = __d('cake', 'アクセスされたページは表示出来ません。');
		}
		$url = $this->controller->request->here();
		$this->controller->response->statusCode($error->getCode());
		$this->controller->set(array(
				'name' => $message,
				'url' => h($url),
				'error' => $error,
				'_serialize' => array('name', 'url'),
				'errorCode' => $error->getCode()
		));
		// エラー画面用のレイアウトを指定
		$this->controller->layout='error';
		$this->_outputMessage('error400');
	}

	public function error500($error) {
		echo 'dfsdfasdf';
		$message = $error->getMessage();
		if (Configure::read('debug') == 0) {
			$message = __d('cake', '申し訳ございません。ただいまシステムエラーが発生しております。');
		}
		$url = $this->controller->request->here();
		$code = ($error->getCode() > 500 && $error->getCode() < 506) ? $error->getCode() : 500;
		$this->controller->response->statusCode($code);
		$this->controller->set(array(
			// 出力メッセージ
			'name' => $message,
			// アクセスされたURL
			'message' => h($url),
			'error' => $error,
			'_serialize' => array('name', 'message'),
			// ステータスコード
			'errorCode' => $error->getCode()
		));
		// エラー画面用のレイアウトを指定
		$this->controller->layout='error';
		$this->_outputMessage('error500');
	}

	public function pdoError(PDOException $error) {
		$url = $this->controller->request->here();
		$code = 500;
		$this->controller->response->statusCode($code);
		$this->controller->set(array(
				'code' => $code,
				'url' => h($url),
				'name' => $error->getMessage(),
				'error' => $error,
				'_serialize' => array('code', 'url', 'name', 'error')
		));
		$this->_outputMessage($this->template);
	}
}